home *** CD-ROM | disk | FTP | other *** search
/ FM Towns: Free Software Collection 11 / FM Towns Free Software Collection 11.iso / t_os / edu / murex / murex.bas < prev    next >
BASIC Source File  |  1995-08-17  |  17KB  |  483 lines

  1. 1000 '*******     Statistics Tool  Murex Ver1.0   Source List     *******
  2. 1010 GOSUB *SETUP
  3. 1020 GOSUB *DAT_SETUP
  4. 1030 GOSUB *MENUDROW
  5. 1040 GOSUB *DAT_PRINT
  6. 1050 GOSUB *MAIN
  7. 1060 '
  8. 1070 *SETUP
  9. 1080 SCREEN@ 2: COLOR 7,%119,%255,4: CLS
  10. 1090 MOUSE 0
  11. 1100 GOSUB *MCURSOR_ALLOW
  12. 1110 ELEM=100: STD = 1
  13. 1120 RETURN
  14. 1130 '
  15. 1140 *MENUDROW
  16. 1150 DIM LINIE(12): LINIE(0)=10: LINIE(1)=40: LINIE(2)=90: LINIE(3)=210: LINIE(4)=220: LINIE(5)=230: LINIE(6)=260: LINIE(7)=300: LINIE(8)=430: LINIE(9)=560: LINIE(10)=600: LINIE(11)=630
  17. 1160 DIM FORMEL$(4): FORMEL$(0)="y=A+Bx": FORMEL$(1)="y=A+BInx": FORMEL$(2)="y=A・e": FORMEL$(3)="y=A・x"
  18. 1170 DIM ZEICHEN$(12): ZEICHEN$(0)=" Σn": ZEICHEN$(1)=" Σx": ZEICHEN$(2)=" Σy": ZEICHEN$(3)=" Σx": ZEICHEN$(4)=" Σy": ZEICHEN$(5)="Σxy"
  19. 1180 ZEICHEN$(6)="  x": ZEICHEN$(7)="  y": ZEICHEN$(8)="   (x)": ZEICHEN$(9)="   (x)": ZEICHEN$(10)="   (x)": ZEICHEN$(11)="   (x)"
  20. 1190 DIM TRIANGLE(6): TRIANGLE(0)=103: TRIANGLE(1)=123: TRIANGLE(2)=213: TRIANGLE(3)=313: TRIANGLE(4)=403: TRIANGLE(5)=423
  21. 1200 LINE (0,0)-(639,40),PSET,%19,BF
  22. 1210 LINE (560,10)-(630,30),PSET,%119,BF
  23. 1220 LINE (11,51)-(209,69),PSET,%19,BF
  24. 1230 LINE (11,71)-(39,309),PSET,%83,BF
  25. 1240 LINE (41,71)-(89,309),PSET,%19,BF
  26. 1250 LINE (11,331)-(209,349),PSET,%19,BF
  27. 1260 LINE (11,351)-(39,429),PSET,%83,BF
  28. 1270 LINE (41,351)-(209,429),PSET,%19,BF
  29. 1280 LINE (11,431)-(89,469),PSET,%19,BF
  30. 1290 LINE (231,51)-(599,69),PSET,%19,BF
  31. 1300 LINE (231,71)-(259,469),PSET,%83,BF
  32. 1310 LINE (601,71)-(629,469),PSET,%83,BF
  33. 1320 FOR KM=0 TO 22
  34. 1330     LINE (10,50+20*KM)-(210,50+20*KM),PSET,%55
  35. 1340     LINE (230,50+20*KM)-(600,50+20*KM),PSET,%55
  36. 1350     IF (KM-1) MOD 5=0 THEN LINE (600,50+20*KM)-(630,50+20*KM),PSET,%55
  37. 1360     IF KM<4 AND KM MOD 3=0 THEN LINE (LINIE(KM),50)-(LINIE(KM),310),PSET,%55: LINE(LINIE(KM),330)-(LINIE(KM),470),PSET,%55
  38. 1370     IF KM<3 AND KM>0 THEN LINE (LINIE(KM),70)-(LINIE(KM),310),PSET,%55: IF KM=1 THEN LINE(LINIE(KM),350)-(LINIE(KM),430),PSET,%55 ELSE LINE(LINIE(KM),430)-(LINIE(KM),470),PSET,%55
  39. 1380     IF KM=4 THEN LINE(LINIE(KM),41)-(LINIE(KM),479),PSET,%19
  40. 1390     IF KM>4 AND KM<12 THEN LINE (LINIE(KM),70)-(LINIE(KM),470),PSET,%55: IF KM><6 AND KM><11 THEN LINE(LINIE(KM),50)-(LINIE(KM),70),PSET,%55
  41. 1400 NEXT KM
  42. 1410 SYMBOL (20,13),"Murex      Ver 1.0",1,1,%127
  43. 1420 SYMBOL (20,53),"Deviation",1,1,%127
  44. 1430 SYMBOL (20,333),"Regression",1,1,%127
  45. 1440 SYMBOL (564,13),"EXIT",1,1,%19
  46. 1450 FOR KM=0 TO 3
  47. 1460     SYMBOL (50,353+20*KM),FORMEL$(KM),1,1
  48. 1470 NEXT KM
  49. 1480 SYMBOL(130,393),"Bx",1,.5!: SYMBOL(130,413),"B",1,.5!
  50. 1490 FOR KM=0 TO 11
  51. 1500     SYMBOL (41,73+20*KM),ZEICHEN$(KM),1,1
  52. 1510     IF KM<5 AND KM>2 THEN SYMBOL(81,73+20*KM),"2",1,.5!
  53. 1520     IF KM>5 AND KM<8 THEN SYMBOL(57,73+20*KM)," ̄",1,1
  54. 1530     IF KM>7 AND KM<11 THEN SYMBOL(41,73+20*KM),"μ",.75!,1
  55. 1540     IF KM=11 THEN SYMBOL(41,73+20*KM),"γ",.75!,1
  56. 1550     IF KM>9 THEN SYMBOL(73,73+20*KM),"~",1,1
  57. 1560     IF KM=8 THEN SYMBOL(53,81+20*KM),"n",.5!,.5!
  58. 1570     IF KM>8 THEN SYMBOL(53,81+20*KM),"n-1",.5!,.5!
  59. 1580 NEXT KM
  60. 1590 SYMBOL(25,433),"A =",1,1:SYMBOL(25,453),"B =",1,1
  61. 1600 SYMBOL(233,53),"Data No.",1,1: SYMBOL(333,53),"Data x",1,1: SYMBOL(389,61),"i",1,.5!: SYMBOL(463,53),"Data y",1,1: SYMBOL(519,61),"i",1,.5!: SYMBOL(563,53),"Data n",.8!,1
  62. 1610 FOR KM=0 TO 5
  63. 1620     IF KM<3 THEN SYMBOL (607,TRIANGLE(KM)),"▲",1,1,%119 ELSE SYMBOL (607,TRIANGLE(KM)),"▼",1,1,%119
  64. 1630 NEXT KM
  65. 1640 RETURN
  66. 1650 '
  67. 1660 *DAT_SETUP
  68. 1670 DIM DAT$(ELEM,4)
  69. 1680 FOR KDS=1 TO ELEM
  70. 1690     DAT$(KDS,3)="1"
  71. 1700     DAT$(KDS,4)="0"
  72. 1710 NEXT KDS
  73. 1715   DIM DAT_C(ELEM,2)
  74. 1720 RETURN
  75. 1730 '
  76. 1740 *DAT_PRINT
  77. 1750 FOR KDP=0 TO 19
  78. 1760     SPLUS_IN$=STR$(STD+KDP): SPLUS_LEN=4
  79. 1770     GOSUB *SPLUS
  80. 1780     SYMBOL (264,73+20*KDP),SPLUS_OUT$,1,1,,,OPAQUE
  81. 1790     SPLUS_IN$=DAT$(STD+KDP,1): SPLUS_LEN=15
  82. 1800     GOSUB *SPLUS
  83. 1810     SYMBOL (305,73+20*KDP),SPLUS_OUT$,1,1,,,OPAQUE
  84. 1820     SPLUS_IN$=DAT$(STD+KDP,2): SPLUS_LEN=15
  85. 1830     GOSUB *SPLUS
  86. 1840     SYMBOL (435,73+20*KDP),SPLUS_OUT$,1,1,,,OPAQUE
  87. 1850     SPLUS_IN$=DAT$(STD+KDP,3): SPLUS_LEN=4
  88. 1860     GOSUB *SPLUS
  89. 1870     SYMBOL (564,73+20*KDP),SPLUS_OUT$,1,1,,,OPAQUE
  90. 1880     IF DAT$(STD+KDP,4)="1" THEN LINE(231,71+20*KDP)-(259,89+20*KDP),PSET,%239,BF ELSE LINE(231,71+20*KDP)-(259,89+20*KDP),PSET,%83,BF
  91. 1890 NEXT KDP
  92. 1900 RETURN
  93. 1910 '
  94. 1920 *MAIN
  95. 1930 MOUSE 1,319,239,1
  96. 1940 ON MOUSE(2) GOSUB *MCONTROL
  97. 1950 MOUSE(2) ON
  98. 1960 WHILE -1: WEND
  99. 1970 '
  100. 1980 *MCONTROL
  101. 1990 IF ABS(MOUSE(0)-595)<=35 AND ABS(MOUSE(1)-20)<=10  GOSUB *EXIT
  102. 2000 IF ABS(MOUSE(0)-615)<=15 AND ABS(MOUSE(1)-270)<=200 GOSUB *MC_1: RETURN
  103. 2010 IF ABS(MOUSE(0)-245)<=15 AND ABS(MOUSE(1)-270)<=200  GOSUB *MC_2: RETURN
  104. 2020 IF ABS(MOUSE(0)-450)<=150 AND ABS(MOUSE(1)-270)<=200 GOSUB *MC_3: RETURN
  105. 2030 IF ABS(MOUSE(0)-15)<=25 AND ABS(MOUSE(1)-190)<=120 GOSUB *MC_4: RETURN
  106. 2040 IF ABS(MOUSE(0)-15)<=25 AND ABS(MOUSE(1)-390)<=40 GOSUB *MC_5: RETURN
  107. 2050 RETURN
  108. 2060 *MC_1
  109. 2070 DR=(MOUSE(1)-70)\100
  110. 2080 GOSUB *MCURSOR_WAIT
  111. 2090 GOSUB *DAT_ROLL
  112. 2100 GOSUB *MCURSOR_ALLOW
  113. 2110 RETURN
  114. 2120 *MC_2
  115. 2130 DN=(MOUSE(1)-70)\20
  116. 2140 FOR KN=0 TO 11
  117. 2150     LINE(11,71+20*KN)-(39,89+20*KN),PSET,%83,BF
  118. 2160     IF KN<4 THEN LINE(11,351+20*KN)-(39,369+20*KN),PSET,%83,BF
  119. 2170 NEXT KN
  120. 2180 GOSUB *DAT_PANEL
  121. 2190 RETURN
  122. 2200 *MC_3
  123. 2210 DI_V=(MOUSE(1)-70)\20
  124. 2220 DI_C=(MOUSE(0)-300)\130
  125. 2230 DI_PRE$=DAT$(STD+DI_V,DI_C+1)
  126. 2240 GOSUB *DAT_INPUT
  127. 2250 IF DAT$(STD+DI_V,DI_C+1)=DI_PRE$ THEN RETURN
  128. 2260 FOR KI=0 TO 11
  129. 2270     LINE(11,71+20*KI)-(39,89+20*KI),PSET,%83,BF
  130. 2280     IF KI<4 THEN LINE(11,351+20*KI)-(39,369+20*KI),PSET,%83,BF
  131. 2290 NEXT KI
  132. 2300 RETURN
  133. 2310 *MC_4
  134. 2320 DC=(MOUSE(1)-70)\20
  135. 2330 GOSUB *MCURSOR_WAIT
  136. 2340 LINE (11,71+20*DC)-(39,89+20*DC),PSET,%103,BF
  137. 2350 ON DC+1 GOSUB *CALC_NUMN,*CALC_SX,*CALC_SY,*CALC_SXX,*CALC_SYY,*CALC_SXY,*CALC_AVX,*CALC_AVY,*CALC_MX,*CALC_MNX,*CALC_MNAVX,*CALC_RNAVX
  138. 2360 SPLUS_LEN=14
  139. 2370 GOSUB *SPLUS
  140. 2380 LINE (11,71+20*DC)-(39,89+20*DC),PSET,%239,BF
  141. 2390 GOSUB *MCURSOR_ALLOW
  142. 2400 SYMBOL (95,73+20*DC),SPLUS_OUT$,1,1,,,OPAQUE
  143. 2410 RETURN
  144. 2420 *MC_5
  145. 2430 DT=(MOUSE(1)-350)\20
  146. 2440 GOSUB *MCURSOR_WAIT
  147. 2450 FOR KT=0 TO 3
  148. 2460     LINE(11,351+20*KT)-(39,369+20*KT),PSET,%83,BF
  149. 2470 NEXT KT
  150. 2480 LINE (11,351+20*DT)-(39,369+20*DT),PSET,%103,BF
  151. 2490 ON DT+1 GOSUB *RET_LINE,*RET_LOG,*RET_EXP,*RET_XX
  152. 2500 LINE (11,351+20*DT)-(39,369+20*DT),PSET,%239,BF
  153. 2510 GOSUB *MCURSOR_ALLOW
  154. 2520 SPLUS_LEN=14
  155. 2530 GOSUB *SPLUS
  156. 2540 SYMBOL (95,433),SPLUS_OUT$,1,1,,,OPAQUE
  157. 2550 IF SPLUS_IN$><"  - Error -   " THEN SPLUS_IN$=STR$(RET_B)
  158. 2560 SPLUS_LEN=14
  159. 2570 GOSUB *SPLUS
  160. 2580 SYMBOL (95,453),SPLUS_OUT$,1,1,,,OPAQUE
  161. 2590 RETURN
  162. 2600 '
  163. 2610 *SPLUS
  164. 2620 SPLUS_OUT$=SPLUS_IN$
  165. 2630 IF KLEN(SPLUS_IN$)>=SPLUS_LEN THEN SPLUS_OUT$=KLEFT$(SPLUS_OUT$,SPLUS_LEN): RETURN
  166. 2640 FOR KS=1 TO SPLUS_LEN-KLEN(SPLUS_IN$)
  167. 2650     SPLUS_OUT$=" "+SPLUS_OUT$
  168. 2660 NEXT KS
  169. 2670 RETURN
  170. 2680 '
  171. 2690 *DAT_ROLL
  172. 2700 IF DR=0 THEN STD=STD-20 ELSE IF DR=1 THEN STD=STD-5 ELSE IF DR=2 THEN STD=STD+5 ELSE STD=STD+20
  173. 2710 IF STD<1 THEN STD=1
  174. 2720 IF STD>ELEM-19 THEN STD=ELEM-19
  175. 2730 GOSUB *DAT_PRINT
  176. 2740 RETURN
  177. 2750 '
  178. 2760 *DAT_PANEL
  179. 2770 IF DAT$(STD+DN,4)="0" THEN DAT$(STD+DN,4)="1": LINE(231,71+20*DN)-(259,89+20*DN),PSET,%239,BF ELSE DAT$(STD+DN,4)="0": LINE(231,71+20*DN)-(259,89+20*DN),PSET,%83,BF
  180. 2780 RETURN
  181. 2790 '
  182. 2800 *DAT_INPUT
  183. 2810 MOUSE 1,,,0
  184. 2820 IF DI_C<2 THEN GOSUB *DATINPUT_XY ELSE GOSUB *DATINPUT_N
  185. 2830 MOUSE 1,,,1
  186. 2840 RETURN
  187. 2850 *DATINPUT_XY
  188. 2860 LINE(301+130*DI_C,71+20*DI_V)-(429+130*DI_C,89+20*DI_V),PSET,%255,BF
  189. 2870 SYMBOL (305+130*DI_C,73+20*DI_V),DAT$(STD+DI_V,DI_C+1),1,1,%119
  190. 2880 DI_LEN=KLEN(DAT$(STD+DI_V,DI_C+1)): DI_MAX=14
  191. 2890 GOSUB *DATA_IN
  192. 2895 GOSUB *DATA_ATOF
  193. 2900 LINE(301+130*DI_C,71+20*DI_V)-(429+130*DI_C,89+20*DI_V),PSET,%119,BF
  194. 2910 SPLUS_IN$=DAT$(STD+DI_V,DI_C+1): SPLUS_LEN=15
  195. 2920 GOSUB *SPLUS
  196. 2930 SYMBOL (305+130*DI_C,73+20*DI_V),SPLUS_OUT$,1,1
  197. 2940 RETURN
  198. 2950 *DATINPUT_N
  199. 2960 LINE(561,71+20*DI_V)-(599,89+20*DI_V),PSET,%255,BF
  200. 2970 SYMBOL (565,73+20*DI_V),DAT$(STD+DI_V,3),1,1,%119
  201. 2980 DI_LEN=KLEN(DAT$(STD+DI_V,3)): DI_MAX=3
  202. 2990 GOSUB *DATA_IN
  203. 3000 LINE(561,71+20*DI_V)-(599,89+20*DI_V),PSET,%119,BF
  204. 3010 SPLUS_IN$=DAT$(STD+DI_V,3): SPLUS_LEN=4
  205. 3020 GOSUB *SPLUS
  206. 3030 SYMBOL (565,73+20*DI_V),SPLUS_OUT$,1,1
  207. 3040 RETURN
  208. 3050 '
  209. 3060 *DATA_IN
  210. 3070 SYMBOL(305+130*DI_C+8*DI_LEN,73+20*DI_V),"_",1,1,%119
  211. 3080 WHILE -1
  212. 3090     WHILE IN$ =""
  213. 3100         IN$=INKEY$
  214. 3110     WEND 
  215. 3120     IF ASC(IN$)=13 THEN IN$="": RETURN
  216. 3130     IF ASC(IN$)=8 GOSUB *DATAIN_BS
  217. 3140     IF ASC(IN$)>=48 AND ASC(IN$)<=57 GOSUB *DATAIN_NUM
  218. 3150     IF IN$="." GOSUB *DATAIN_POINT
  219. 3160     IF IN$="-" GOSUB *DATAIN_MINUS
  220. 3170     IN$=""
  221. 3180 WEND
  222. 3190 *DATAIN_POINT
  223. 3200 FOR KDI=1 TO DI_LEN
  224. 3210     IF MID$(DAT$(STD+DI_V,DI_C+1),KDI,1)="." THEN RETURN
  225. 3220 NEXT KDI
  226. 3230 IF DI_C=2 THEN RETURN
  227. 3240 GOSUB *DATAIN_NUM
  228. 3250 RETURN
  229. 3260 *DATAIN_MINUS
  230. 3270 IF DI_LEN><0 THEN RETURN
  231. 3280 IF DI_C=2 THEN RETURN
  232. 3290 GOSUB *DATAIN_NUM
  233. 3300 RETURN
  234. 3310 *DATAIN_NUM
  235. 3320 IF DI_LEN=DI_MAX THEN RETURN
  236. 3330 DAT$(STD+DI_V,DI_C+1)=DAT$(STD+DI_V,DI_C+1)+IN$
  237. 3340 SYMBOL(305+130*DI_C+8*DI_LEN,73+20*DI_V)," ",1,1,,,NOT
  238. 3350 SYMBOL(305+130*DI_C+8*DI_LEN,73+20*DI_V),IN$,1,1,%119
  239. 3360 DI_LEN=DI_LEN+1
  240. 3370 SYMBOL(305+130*DI_C+8*DI_LEN,73+20*DI_V),"_",1,1,%119
  241. 3380 RETURN
  242. 3390 *DATAIN_BS
  243. 3400 IF DI_LEN=0 THEN RETURN
  244. 3410 DAT$(STD+DI_V,DI_C+1)=KLEFT$(DAT$(STD+DI_V,DI_C+1),DI_LEN-1)
  245. 3420 SYMBOL(305+130*DI_C+8*DI_LEN,73+20*DI_V)," ",1,1,,,NOT
  246. 3430 DI_LEN=DI_LEN-1
  247. 3440 SYMBOL(305+130*DI_C+8*DI_LEN,73+20*DI_V)," ",1,1,,,NOT
  248. 3450 SYMBOL(305+130*DI_C+8*DI_LEN,73+20*DI_V),"_",1,1,%119
  249. 3460 RETURN
  250. 3461 '
  251. 3462 *DATA_ATOF
  252. 3463 DA_P=0: DA_S=0: DA_T=0: DAT_C(STD+DI_V,DI_C+1)=0
  253. 3464 DA_L=KLEN(DAT$(STD+DI_V,DI_C+1))
  254. 3465 FOR KDA=1 TO DA_L
  255. 3466     DA_G=0
  256. 3467     IF KDA=1 AND MID$(DAT$(STD+DI_V,DI_C+1),KDA,1)="-" THEN DA_S=1: DA_G=1
  257. 3468     IF MID$(DAT$(STD+DI_V,DI_C+1),KDA,1)="." THEN DA_P=1: DA_G=1
  258. 3469     IF DA_G=0 THEN GOSUB *DATAATOF_S
  259. 3470 NEXT KDA
  260. 3471 IF DA_S=1 THEN DAT_C(STD+DI_V,DI_C+1)=-DAT_C(STD+DI_V,DI_C+1)
  261. 3472 RETURN
  262. 3473 *DATAATOF_S
  263. 3474 IF DA_P=0 THEN DAT_C(STD+DI_V,DI_C+1)=DAT_C(STD+DI_V,DI_C+1)*10
  264. 3475 IF DA_P=0 THEN DA_T=VAL(MID$(DAT$(STD+DI_V,DI_C+1),KDA,1)) ELSE DA_T=VAL(MID$(DAT$(STD+DI_V,DI_C+1),KDA,1))/(10^DA_P): DA_P=DA_P+1
  265. 3476 DAT_C(STD+DI_V,DI_C+1)=DAT_C(STD+DI_V,DI_C+1)+DA_T
  266. 3477 RETURN
  267. 3478 '
  268. 3480 *CALC_NUMN
  269. 3490 DC_OUT=0
  270. 3500 FOR KC=1 TO ELEM
  271. 3510     DC_OUT=DC_OUT+VAL(DAT$(KC,4))*VAL(DAT$(KC,3))
  272. 3520 NEXT KC
  273. 3530 SPLUS_IN$=STR$(DC_OUT)
  274. 3540 RETURN
  275. 3550 '
  276. 3560 *CALC_SX
  277. 3570 DC_OUT=0
  278. 3580 FOR KC=1 TO ELEM
  279. 3590     DC_OUT=DC_OUT+VAL(DAT$(KC,4))*VAL(DAT$(KC,3))*DAT_C(KC,1)
  280. 3600 NEXT KC
  281. 3610 SPLUS_IN$=STR$(DC_OUT)
  282. 3620 RETURN
  283. 3630 '
  284. 3640 *CALC_SY
  285. 3650 DC_OUT=0
  286. 3660 FOR KC=1 TO ELEM
  287. 3670     DC_OUT=DC_OUT+VAL(DAT$(KC,4))*VAL(DAT$(KC,3))*DAT_C(KC,2)
  288. 3680 NEXT KC
  289. 3690 SPLUS_IN$=STR$(DC_OUT)
  290. 3700 RETURN
  291. 3710 '
  292. 3720 *CALC_SXX
  293. 3730 DC_OUT=0
  294. 3740 FOR KC=1 TO ELEM
  295. 3750     DC_OUT=DC_OUT+VAL(DAT$(KC,4))*VAL(DAT$(KC,3))*DAT_C(KC,1)*DAT_C(KC,1)
  296. 3760 NEXT KC
  297. 3770 SPLUS_IN$=STR$(DC_OUT)
  298. 3780 RETURN
  299. 3790 '
  300. 3800 *CALC_SYY
  301. 3810 DC_OUT=0
  302. 3820 FOR KC=1 TO ELEM
  303. 3830     DC_OUT=DC_OUT+VAL(DAT$(KC,4))*VAL(DAT$(KC,3))*DAT_C(KC,2)*DAT_C(KC,2)
  304. 3840 NEXT KC
  305. 3850 SPLUS_IN$=STR$(DC_OUT)
  306. 3860 RETURN
  307. 3870 '
  308. 3880 *CALC_SXY
  309. 3890 DC_OUT=0
  310. 3900 FOR KC=1 TO ELEM
  311. 3910     DC_OUT=DC_OUT+VAL(DAT$(KC,4))*VAL(DAT$(KC,3))*DAT_C(KC,1)*DAT_C(KC,2)
  312. 3920 NEXT KC
  313. 3930 SPLUS_IN$=STR$(DC_OUT)
  314. 3940 RETURN
  315. 3950 '
  316. 3960 *CALC_AVX
  317. 3970 GOSUB *CALC_NUMN: DC_SN=DC_OUT
  318. 3980 IF DC_SN=0 THEN SPLUS_IN$="  - Error -   ": RETURN
  319. 3990 GOSUB *CALC_SX: DC_SX=DC_OUT
  320. 4000 DC_OUT=DC_SX/DC_SN
  321. 4010 SPLUS_IN$=STR$(DC_OUT)
  322. 4020 RETURN
  323. 4030 '
  324. 4040 *CALC_AVY
  325. 4050 GOSUB *CALC_NUMN: DC_SN=DC_OUT
  326. 4060 IF DC_SN=0 THEN SPLUS_IN$="  - Error -   ": RETURN
  327. 4070 GOSUB *CALC_SY: DC_SY=DC_OUT
  328. 4080 DC_OUT=DC_SY/DC_SN
  329. 4090 SPLUS_IN$=STR$(DC_OUT)
  330. 4100 RETURN
  331. 4110 '
  332. 4120 *CALC_SDXX
  333. 4130 GOSUB *CALC_AVX: DC_AVX=DC_OUT
  334. 4140 IF SPLUS_IN$="  - Error -   " THEN RETURN
  335. 4150 DC_OUT=0
  336. 4160 FOR KC=1 TO ELEM
  337. 4170     DC_OUT=DC_OUT+VAL(DAT$(KC,4))*(DAT_C(KC,1)-DC_AVX)*(DAT_C(KC,1)-DC_AVX)*VAL(DAT$(KC,3))
  338. 4180 NEXT KC
  339. 4190 SPLUS_IN$=STR$(DC_OUT)
  340. 4200 RETURN
  341. 4210 '
  342. 4220 *CALC_MX
  343. 4230 GOSUB *CALC_SDXX
  344. 4240 IF SPLUS_IN$="  - Error -   " THEN RETURN
  345. 4250 DC_OUT=SQR(DC_OUT/DC_SN)
  346. 4260 SPLUS_IN$=STR$(DC_OUT)
  347. 4270 RETURN
  348. 4280 '
  349. 4290 *CALC_MNX
  350. 4300 GOSUB *CALC_SDXX
  351. 4310 IF DC_SN=1 THEN SPLUS_IN$="  - Error -   "
  352. 4320 IF SPLUS_IN$="  - Error -   " THEN RETURN
  353. 4330 DC_OUT=SQR(DC_OUT/(DC_SN-1))
  354. 4340 SPLUS_IN$=STR$(DC_OUT)
  355. 4350 RETURN
  356. 4360 '
  357. 4370 *CALC_MNAVX
  358. 4380 GOSUB *CALC_MNX
  359. 4390 IF SPLUS_IN$="  - Error -   " THEN RETURN
  360. 4400 DC_OUT=DC_OUT/SQR(DC_SN)
  361. 4410 SPLUS_IN$=STR$(DC_OUT)
  362. 4420 RETURN
  363. 4430 '
  364. 4440 *CALC_RNAVX
  365. 4450 GOSUB *CALC_MNAVX
  366. 4460 IF SPLUS_IN$="  - Error -   " THEN RETURN
  367. 4470 DC_OUT=.6745!*DC_OUT
  368. 4480 SPLUS_IN$=STR$(DC_OUT)
  369. 4490 RETURN
  370. 4500 '
  371. 4510 *CALC_SLX
  372. 4520 DC_OUT=0
  373. 4530 FOR KC=1 TO ELEM
  374. 4540     IF DAT_C(KC,1)>0 THEN DC_OUT=DC_OUT+VAL(DAT$(KC,4))*VAL(DAT$(KC,3))*LOG(DAT_C(KC,1))
  375. 4550 NEXT KC
  376. 4560 RETURN
  377. 4570 '
  378. 4580 *CALC_SLY
  379. 4590 DC_OUT=0
  380. 4600 FOR KC=1 TO ELEM
  381. 4610     IF DAT_C(KC,2)>0 THEN DC_OUT=DC_OUT+VAL(DAT$(KC,4))*VAL(DAT$(KC,3))*LOG(DAT_C(KC,2))
  382. 4620 NEXT KC
  383. 4630 RETURN
  384. 4640 '
  385. 4650 *CALC_SLXLX
  386. 4660 DC_OUT=0
  387. 4670 FOR KC=1 TO ELEM
  388. 4680     IF DAT_C(KC,1)>0 THEN DC_OUT=DC_OUT+VAL(DAT$(KC,4))*VAL(DAT$(KC,3))*LOG(DAT_C(KC,1))*LOG(DAT_C(KC,1))
  389. 4690 NEXT KC
  390. 4700 RETURN
  391. 4710 '
  392. 4720 *CALC_SLXY
  393. 4730 DC_OUT=0
  394. 4740 FOR KC=1 TO ELEM
  395. 4750     IF DAT_C(KC,1)>0 THEN DC_OUT=DC_OUT+VAL(DAT$(KC,4))*VAL(DAT$(KC,3))*LOG(DAT_C(KC,1))*DAT_C(KC,2)
  396. 4760 NEXT KC
  397. 4770 RETURN
  398. 4780 '
  399. 4790 *CALC_SXLY
  400. 4800 DC_OUT=0
  401. 4810 FOR KC=1 TO ELEM
  402. 4820     IF DAT_C(KC,2)>0 THEN DC_OUT=DC_OUT+VAL(DAT$(KC,4))*VAL(DAT$(KC,3))*DAT_C(KC,1)*LOG(DAT_C(KC,2))
  403. 4830 NEXT KC
  404. 4840 RETURN
  405. 4850 '
  406. 4860 *CALC_SLXLY
  407. 4870 DC_OUT=0
  408. 4880 FOR KC=1 TO ELEM
  409. 4890     IF DAT_C(KC,1)>0 AND DAT_C(KC,2)>0 THEN DC_OUT=DC_OUT+VAL(DAT$(KC,4))*VAL(DAT$(KC,3))*LOG(DAT_C(KC,1))*LOG(DAT_C(KC,2))
  410. 4900 NEXT KC
  411. 4910 RETURN
  412. 4920 '
  413. 4930 *RET_LINE
  414. 4940 GOSUB *CALC_NUMN: DC_SN=DC_OUT
  415. 4950 IF DC_SN<2 THEN SPLUS_IN$="  - Error -   ": RETURN
  416. 4960 GOSUB *CALC_SX: DC_SX=DC_OUT
  417. 4970 GOSUB *CALC_SXX: DC_SXX=DC_OUT
  418. 4980 IF DC_SN*DC_SXX-DC_SX*DC_SX=0 THEN SPLUS_IN$="  - Error -   ": RETURN
  419. 4990 GOSUB *CALC_SY: DC_SY=DC_OUT
  420. 5000 GOSUB *CALC_SXY: DC_SXY=DC_OUT
  421. 5010 RET_B=(DC_SN*DC_SXY-DC_SX*DC_SY)/(DC_SN*DC_SXX-DC_SX*DC_SX)
  422. 5020 RET_A=(DC_SY-RET_B*DC_SX)/DC_SN
  423. 5030 SPLUS_IN$=STR$(RET_A)
  424. 5040 RETURN
  425. 5050 '
  426. 5060 *RET_LOG
  427. 5070 GOSUB *CALC_NUMN: DC_SN=DC_OUT
  428. 5080 IF DC_SN<2 THEN SPLUS_IN$="  - Error -   ": RETURN
  429. 5090 GOSUB *CALC_SLX: DC_SX=DC_OUT
  430. 5100 GOSUB *CALC_SLXLX: DC_SXX=DC_OUT
  431. 5110 IF DC_SN*DC_SXX-DC_SX*DC_SX=0 THEN SPLUS_IN$="  - Error -   ": RETURN
  432. 5120 GOSUB *CALC_SY: DC_SY=DC_OUT
  433. 5130 GOSUB *CALC_SLXY: DC_SXY=DC_OUT
  434. 5140 RET_B=(DC_SN*DC_SXY-DC_SX*DC_SY)/(DC_SN*DC_SXX-DC_SX*DC_SX)
  435. 5150 RET_A=(DC_SY-RET_B*DC_SX)/DC_SN
  436. 5160 SPLUS_IN$=STR$(RET_A)
  437. 5170 RETURN
  438. 5180 '
  439. 5190 *RET_EXP
  440. 5200 GOSUB *CALC_NUMN: DC_SN=DC_OUT
  441. 5210 IF DC_SN<2 THEN SPLUS_IN$="  - Error -   ": RETURN
  442. 5220 GOSUB *CALC_SX: DC_SX=DC_OUT
  443. 5230 GOSUB *CALC_SXX: DC_SXX=DC_OUT
  444. 5240 IF DC_SN*DC_SXX-DC_SX*DC_SX=0 THEN SPLUS_IN$="  - Error -   ": RETURN
  445. 5250 GOSUB *CALC_SLY: DC_SY=DC_OUT
  446. 5260 GOSUB *CALC_SXLY: DC_SXY=DC_OUT
  447. 5270 RET_B=(DC_SN*DC_SXY-DC_SX*DC_SY)/(DC_SN*DC_SXX-DC_SX*DC_SX)
  448. 5280 RET_A=EXP((DC_SY-RET_B*DC_SX)/DC_SN)
  449. 5290 SPLUS_IN$=STR$(RET_A)
  450. 5300 RETURN
  451. 5310 '
  452. 5320 *RET_XX
  453. 5330 GOSUB *CALC_NUMN: DC_SN=DC_OUT
  454. 5340 IF DC_SN<2 THEN SPLUS_IN$="  - Error -   ": RETURN
  455. 5350 GOSUB *CALC_SLX: DC_SX=DC_OUT
  456. 5360 GOSUB *CALC_SLXLX: DC_SXX=DC_OUT
  457. 5370 IF DC_SN*DC_SXX-DC_SX*DC_SX=0 THEN SPLUS_IN$="  - Error -   ": RETURN
  458. 5380 GOSUB *CALC_SLY: DC_SY=DC_OUT
  459. 5390 GOSUB *CALC_SLXLY: DC_SXY=DC_OUT
  460. 5400 RET_B=(DC_SN*DC_SXY-DC_SX*DC_SY)/(DC_SN*DC_SXX-DC_SX*DC_SX)
  461. 5410 RET_A=EXP((DC_SY-RET_B*DC_SX)/DC_SN)
  462. 5420 SPLUS_IN$=STR$(RET_A)
  463. 5430 RETURN
  464. 5440 '
  465. 5450 *MCURSOR_ALLOW
  466. 5460 MOUSE 2,CHR$(255,255,191,255,159,255,143,255,135,255,131,255,129,255,128,255,128,127,128,63,128,127,128,255,128,127,144,127,248,127,248,255),CHR$(0,0,0,0,0,0,32,0,48,0,24,0,44,0,30,0,47,0,22,0,44,0,6,0,6,0,3,0,2,0,0,0)
  467. 5470 RETURN
  468. 5480 '
  469. 5490 *MCURSOR_WAIT
  470. 5500 MOUSE 2,CHR$(240,31,240,31,240,31,248,63,248,63,248,63,252,127,252,127,252,127,248,63,248,63,248,63,240,31,240,31,240,31,240,31),CHR$(0,0,7,192,7,192,3,128,2,128,1,0,0,0,1,0,0,0,3,128,3,128,3,128,6,192,5,64,2,128,0,0)
  471. 5510 RETURN
  472. 5520 '
  473. 5530 *EXIT
  474. 5540 MOUSE 5
  475. 5550 FOR KE=0 TO 478 STEP 2
  476. 5560     LINE(0,KE)-(639,KE),PSET,%0
  477. 5570     LINE(0,479-KE)-(639,479-KE),PSET,%0
  478. 5580 NEXT KE
  479. 5590 COLOR 7,0,7: SCREEN@ 0: CLS
  480. 5600 LOCATE 22,1: PRINT "Statistics Tool  Murex Ver1.0"
  481. 5610 LOCATE 21,3: PRINT "Copyright (C)  Ryusuke Sugiura , 1995."
  482. 5620 END
  483.